package com.tianquan.miracle.core;

/**
 * @author tianquan
 * @date 2024-09-28 下午9:54
 * @description Bean工厂接口，用于创建和管理Bean的生命周期
 */
public interface BeanFactory {

    /**
     * 根据Bean的名称获取Bean实例
     *
     * @param name Bean的名称
     * @return Bean实例
     */
    Object getBean(String name);

    /**
     * 根据Bean的类型获取Bean实例
     *
     * @param aClass Bean的类型
     * @param <T>    Bean的类型参数
     * @return Bean实例
     */
    <T> T getBean(Class<T> aClass);

    /**
     * 检查Bean工厂中是否包含指定名称的Bean
     *
     * @param name Bean的名称
     * @return 如果包含则返回true，否则返回false
     */
    boolean containsBean(String name);

    /**
     * 检查Bean工厂中是否包含指定类型的Bean
     *
     * @param aClass Bean的类型
     * @return 如果包含则返回true，否则返回false
     */
    boolean containsBean(Class<?> aClass);

}

